Cache memory and system with partial error detection and correction of MESI protocol

ABSTRACT

A cache memory includes a plurality of lines of memory and a plurality of cache coherency state registers. Each of the plurality of cache coherency state registers is associated with one of the plurality of lines of memory. Each of the plurality of cache coherency state registers further includes four elements having one of a first value and a second value to form a four bit code for a MESI Protocol. The four bit code provides a first set of codes having a minimum distance of two from every other code, and a second set of codes having a minimum distance of three from every other code. The first set of codes includes a first code representing an Invalid state, a second code representing a Shared state, and a third code representing an Exclusive state. The second set of codes includes a fourth code representing a Modified state.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a divisional of application Ser. No. 09/410,500 filed Oct. 1, 1999, allowed, U.S. Pat. No. 6,505,318 B1.

BACKGROUND OF THE INVENTION

It is axiomatic that data entering a data processor, whether it originates in a local memory, or is received from a remote source via a communication link, must be correct. For this reason many error detecting codes (EDC) and error correcting codes (ECC) have been developed to insure the integrity of the information to be processed. Common to all of these codes is redundancy, wherein additional bits are added to the information bits, as a function thereof, to permit the algorithm controlling the check bits to be recomputed at the destination for error detection and possible correction, if the code is sufficiently redundant. Computer memories are an example of a source of data entering a data processor where it is advantageous to use error detecting and error correcting codes. The most likely source of errors in computer memories is corruption of the data during the time the data is held in the memory. Such soft (intermittent) errors may be induced by background cosmic radiation and alpha particle bombardment.

It is well known in the prior art to add a parity bit to units of data being stored in computer memories to detect a single bit error in the data unit when the unit is read. Typically, a parity bit is added for each 8 bit byte of data in the memory. Thus, 9 bits of storage are used for each 8 bit byte of data storage provided. Parity protected memories are limited in that the process requesting faulty data only knows that the data is faulty. There is no general mechanism to allow the process to recover from the error. Most often, a memory fault requires that the process accessing the faulty memory line be terminated or that the system be rebooted. It is also well known in the prior art to add error correction codes to units of data being stored to detect and correct errors. This provides a system that can recover from detected errors. For example, a 32 bit computer word can be protected by adding a 6 bit ECC. The ECC allows all single bit errors to be detected and corrected. A 7 bit ECC detects and corrects single bit errors and also detects double bit errors.

One class of error correcting codes, known as Hamming codes, is described by R. W. Hamming in “Error Detecting and Error Correcting Codes”, Bell Systems Technical Journal, 29, 1950, pages 147-160. Hamming described several specific instances of Hamming codes. The specific codes described were single error detection codes (SED), single error correction codes (SEC), and single error correction, double error detection codes (SEC/DED). Error correcting code theory and applications are treated in the text “Error Control Coding, Fundamentals and Applications” by Lin et al., published by Prentice-Hall, 1982.

The correction capabilities of any code is dependent upon redundancy. In the simplest case of a SED, a single parity bit, the redundancy is very low and there are no correction possibilities. In fact, two compensating errors will not be detected, as the parity is unchanged. A Hamming SEC is more redundant, with the number of redundant ECC bits related to the number of information bits that are to be protected. Three ECC bits are required to provide SEC for two to four information bits. When error correcting codes are used to protect a small number of information bits, the redundancy becomes very high.

In standard coding theory notation, “k” represents the number of data bits in a code word, “r” represents the number of check bits in the code word, and “n” represents the total number of bits in a code word (n=k+r). According to Hamming, a single error correcting code must satisfy the equation 2^(r)≧k+r+1.

A geometric model is sometimes used to examine problems of error detection and correction. The n bits of a code are viewed as the vertices of an n-dimensional unit cube. This is readily visualized for n=3. As shown in FIG. 1, a 3 dimensional unit cube 100 has eight vertices: (0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0), (1,1,1). Starting from (0,0,0) and moving the distance of 1 unit along an edge takes us to (0,0,1), (0,1,0), or (1,0,0). Moving a distance of 1 unit means that the value of one coordinate is changed. Starting from (0,0,0) and moving the distance of 2 units along an edge takes us to (0,1,1), (1,0,1), or (1,1,0). Moving a distance of 2 unit means that the value of two coordinates are changed.

An error is the unexpected change in value of one or bits in the code. A single bit error changes the value of one coordinate so that a single bit error code will be a distance of 1 from the original valid code symbol. If all the possible 2^(n) code symbols of an n bit code are valid code symbols, then errors will produce other valid code symbols and no error detection or correction is possible.

To obtain an error detecting code or an error correcting code of n bits, the valid code symbols must be a subset of all the possible 2^(n) code symbols. If all the valid code symbols are separated by a distance of 2, then a code symbol with a single bit error will change one coordinate and be at a distance of 1 from the original valid code symbol. However, the code symbol with a single bit error will also be at a distance of 1 from additional valid code symbols other than the original valid code symbol because valid code symbols are separated by a distance of 2. Therefore, a code where all the valid code symbols are separated by a distance of 2 is a single bit error detecting code. If the distance between the valid code symbols is increased to 3, then a code symbol with a single bit error will be at a distance of 1 from the original valid code symbol and at a distance of 2 or more from all other valid code symbols. Thus, a code where all the valid code symbols are separated by a distance of 3 is a single bit error correcting code.

An exemplary application of error correcting codes is in the area of cache memory coherency state bits. To speed memory access, computers often use cache memory, which is a small high speed memory that provides fast access to a copy of the data in current use. When more than one device can write to the memory, a mechanism must be provided to maintain cache coherency. The activity of one device may invalidate the contents of a cache or main memory as used by another device. One cache coherency protocol well-known in the art is the MESI Protocol. The name is derived from four states which are maintained for the status of each line in the cache memory: Modified, Exclusive, Shared, and Invalid (MESI). The state is maintained by status bits associated with each cache line. While two bits are sufficient to maintain the four states, the status is typically protected by an ECC because of the grave consequences of an error in these bits. Three additional bits are required to provide an ECC for two data bits. Therefore, five status bits per line of cache memory are required.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a geometric model of an embodiment of the present invention that provides a code with four unprotected symbols and one symbol protected by error detection.

FIG. 2 shows a logic circuit for an embodiment of the present invention that provides a protected code for use with cache coherency state bits.

DETAILED DESCRIPTION OF THE INVENTION

The present invention provides a method and apparatus for partial error detection and correction of digital data. A set of code symbols is provided having one subset of code symbols with one level of error detection or correction and another subset of code symbols with a greater level of error detection or correction. One example of a code that embodies the present invention provides a first subset of symbols where single bit errors cannot be detected and a second subset of symbols where single bit errors can be detected but not corrected. Another exemplary embodiment of a code according to the present invention provides a first subset of symbols where single bit errors can be detected but not corrected and a second subset of symbols where single bit errors can be detected and corrected. Other combinations of levels of error protection are also possible. It is also possible to provide more than two subsets of code symbols with differing levels of error protection in one set code of code symbols. In applications where an error in certain symbols is more critical than in other symbols, codes with partial error protection and correction provide a more efficient use of bits.

The codes of the present invention have symbols that can be grouped into two or more sets of symbols where all the symbols in one set are at a first minimum distance from other symbols while the symbols in another set are at a second, larger, minimum distance from other symbols. The degree of error protection provided is determined by the minimum distance the symbols in the set are from all other symbols.

A very simple embodiment of a code according to the present invention would be a 3 bit code that provides 4 symbols with no error detection and 1 symbol with single-bit error detection. The symbols in the first set are at a minimum distance of 1 from other symbols while the symbol in the second set is at a minimum distance of 2 from other symbols. One embodiment of the invention uses the following selection of symbols:

First Set: (0,0,0), (0,0,1), (0,1,0), (1,0,0)

Error Codes: (0,1,1), (1,0,1), (1,1,0)

Second Set: (1,1,1)

This can be visualized geometrically as a three-dimensional cube as shown in FIG. 1. A one bit error in a symbol from the first set 102 may produce another valid symbol. Hence, no error detection is possible for symbols from the first set. A one bit error in the second set symbol 104 will produce an error code 106. However, because (1,1,1) is distance 2 from some symbols in the first set 102, the error cannot be corrected. The error code 106 could also be a single bit error in a first symbol that is distance 2 from (1,1,1). A code with 5 symbols requires at least 3 bits. In prior art codes, an additional parity bit would be added to provide error detection for all symbols yielding a 4 bit code. Using a code that embodies the present invention, 1 symbol in a 5 symbol code can have error detection using only 3 bits.

Another embodiment of the present invention provides a 4 bit code with 4 symbols having a minimum distance of 2 to provide error detection and 1 symbol having a minimum distance of 3 to provide error correction. One embodiment of the invention uses the following selection of symbols:

Error Codes A: (0,0,0,0)

First Set: (0,0,0,1), (0,0,1,0), (0,1,0,0), (1,0,0,0)

Error Codes B: (0,0,1,1), (0,1,0,1), (0,1,1,0), (1,0,0,1), (1,0,1,0), (1,1,0,0)

Error Codes C: (0,1,1,1), (1,0,1,1), (1,1,0,1), (1,1,1,0)

Second Set: (1,1,1,1)

The 4 symbols of the first set provide error detection because they are distance 2 from each other and distance 1 from the error codes in groups A and B. The symbol (1,1,1,1) in the second set provides error correction because it is distance 3 from the other symbols. A single bit error in symbol (1,1,1,1) will result in one of the error codes in group C at distance 1. It may be observed that all symbols in the first set have exactly 1 bit set. The single bit errors for the first set have either no bits set, group A, or exactly 2 bits set, group B. The second set symbol has all bits set. The single bit errors for the second set have exactly 3 bits set, group C. These bit relationships for this particular selection of symbols in this embodiment of the invention can be advantageous in the mechanization of the error detection and correction apparatus.

The above embodiment of a code according to the present invention is advantageously applied to the cache coherency bits of a cache memory employing the MESI protocol. The Modified state is critical because it indicates that the cache line is more current than main memory. If the cache line is in the Modified state, the cache line must be written to main memory before any other device attempts to read from that main memory location. The Exclusive, Shared, and Invalid states are less critical. The Exclusive and Shared states indicate that the cache has a valid copy of the contents of main memory, with Exclusive indicating that the cache copy is available for writing. The Invalid state, of course, means that the cache does not have a valid content. If an error is detected in the Exclusive, Shared, or Invalid states, the state may be set to Invalid without harm other than an added main memory access. Thus, error detection provides adequate protection for these three states, while error correction is required only for the Modified state. The E, S, and I symbols are chosen from the first set of symbols and the M symbol is the second set symbol.

In one particular embodiment, E could be represented by (0,1,0,0), S by (0,0,1,0), and I by (0,0,0,1). The symbol (1,0,0,0) from the first set is unused. M would be represented by (1,1,1,1) in this embodiment. When a detectable but uncorrectable error is detected, error codes A or B, the error code is replaced by the “I” symbol. Correctable errors, group C, are replaced by the M symbol. If the input symbol is represented as (A,B,C,D), the following table shows the values that result from all possible inputs and indicates the detected and corrected errors:

Output Error Error A B C D State Detected Corrected 0 0 0 0 I X 0 0 0 1 I 0 0 1 0 S 0 0 1 1 I X 0 1 0 0 E 0 1 0 1 I X 0 1 1 0 I X 0 1 1 1 M X 1 0 0 0 I * 1 0 0 1 I X 1 0 1 0 I X 1 0 1 1 M X 1 1 0 0 I X 1 1 0 1 M X 1 1 1 0 M X 1 1 1 1 M *Valid but unused symbol, corrected to I.

FIG. 2 shows one illustrative embodiment of a logic circuit in a register that receives inputs representing the embodiment of a four bit code according to the present invention as shown in the table above and provides outputs representing the corrected symbols. The register produces four corrected output states based on the sixteen possible uncorrected input states. The output states can be represented using the same correctable code as the inputs or any other suitable code as required by a particular application of the invention. The E output state 212 is determined by detecting that the B input 204 is asserted and that the A, C, and D inputs 202, 206, 208 are not. The S output state 214 is determined by detecting that the C input 206 is asserted and that the A, B, and D inputs 202, 204, 208 are not. The E and S output states each correspond to exactly one input state because the is no error correction provided for these states. The M output state 216 is determined by detecting all the input states where at least three of the inputs are asserted. This includes the correct M input state where all four inputs are asserted and the four correctable M input states where three of the inputs are asserted. All remaining states are interpreted as the I output state 218. This includes the correct I input state where the D input 208 is asserted and the A, B, and C inputs 202, 204, 206 are not, the detectable error input states, and the unused symbol input state. The I state is detected as not the M, E, or S states rather than directly decoding the input states. This embodiment of the present invention provides a 4 bit code for the MESI protocol that provides error protection that is as effective as a 5 bit ECC of the prior art with a negligible loss of performance.

While certain exemplary embodiments have been described, it is to be understood that such embodiments are merely illustrative of and not restrictive on the broad invention, and that this invention not be limited to the specific constructions and arrangements shown and described, since various other modifications may occur to those ordinarily skilled in the art. In particular, the invention is not limited to use in cache coherency state bits. 

What is claimed is:
 1. A cache memory comprising: a plurality of lines of memory; and a plurality of cache coherency state registers, each of the plurality of cache coherency state registers associated with one of the plurality of lines of memory, each of the plurality of cache coherency state registers further comprising four elements, each element characterized by having one of a first value and a second value, said elements forming a four bit code that provides a first set of codes having a minimum distance of two from every other code, and a second set of codes having a minimum distance of three from every other code, the first set of codes comprising a first code representing an Invalid state, a second code representing a Shared state, and a third code representing an Exclusive state, and the second set of codes comprising a fourth code representing a Modified state.
 2. The cache memory of claim 1, further comprising: an error detection circuit to detect a single element error in a selected one of the cache coherency state registers if the four bit code is a distance of one unit from the fourth code; and an error correction circuit to correct the single element error in the selected one of the cache coherency state registers, if detected, by replacing the four bit code with the fourth code.
 3. The cache memory of claim 1, further comprising: an error detection circuit to detect a single element error in a selected one of the cache coherency state registers if the four bit code is a distance of one unit from one of the codes in the first set of codes; and an error correction circuit to correct the single element error in the four bit code, if detected, by replacing the four bit code with the first code.
 4. The cache memory of claim 3, wherein: the error detection circuit is further to detect a second single element error in a selected one of the cache coherency state registers if the four bit code is a distance of one unit from the fourth code; and the error correction circuit is further to correct the second single element error in the selected one of the cache coherency state registers, if detected, by replacing the four bit code with the fourth code.
 5. The cache memory of claim 1, wherein the first set of codes consists of codes where three elements have the first value and one element has the second value, and where all the elements of the fourth code have the second value.
 6. The cache memory of claim 5, further comprising: an error detection circuit to detect a single element error in the four bit code if one element has the first value and three elements have the second value; and an error correction circuit to correct the single element error in the four bit code, if detected, by replacing the four bit code with the fourth code.
 7. The cache memory of claim 5, further comprising: an error detection circuit to detect a single element error in the four bit code if all four elements have the first value or if two binary elements have the first value and two elements have the second value; and an error correction circuit to correct the single element error in the four bit code, if detected, by replacing the four bit code with the first code.
 8. The cache memory of claim 7, wherein: the error detection circuit is further to detect a second single element error in the four bit code if one element has the first value and three elements have the second value; and the error correction circuit is further to correct the second single element error in the four bit code, if detected, by replacing the four bit code with the fourth code.
 9. A system comprising: a data processor; a main memory; and a cache memory coupled to the data processor and the main memory, the cache memory including, a plurality of lines of memory, and a plurality of cache coherency state registers, each of the plurality of cache coherency state registers associated with one of the plurality of lines of memory, each of the plurality of cache coherency state registers further comprising four elements, each element characterized by having one of a first value and a second value, said elements forming a four bit code that provides a first set of codes having a minimum distance of two from every other code, and a second set of codes having a minimum distance of three from every other code, the first set of codes comprising a first code representing an Invalid state, a second code representing a Shared state, and a third code representing an Exclusive state, and the second set of codes comprising a fourth code representing a Modified state.
 10. The system of claim 9, further comprising: an error detection circuit coupled to the plurality of cache coherency state registers, the error detection circuit to detect a single element error in a selected one of the cache coherency state registers if the four bit code is a distance of one unit from the fourth code; and an error correction circuit coupled to the plurality of cache coherency state registers, the error correction circuit to correct the single element error in the selected one of the cache coherency state registers, if detected, by replacing the four bit code with the fourth code.
 11. The system of claim 9, further comprising: an error detection circuit coupled to the plurality of cache coherency state registers, the error detection circuit to detect a single element error in a selected one of the cache coherency state registers if the four bit code is a distance of one unit from one of the codes in the first set of codes; and an error correction circuit coupled to the plurality of cache coherency state registers, the error correction circuit to correct the single element error in the four bit code, if detected, by replacing the four bit code with the first code.
 12. The system of claim 11, wherein: the error detection circuit is further to detect a second single element error in a selected one of the cache coherency state registers if the four bit code is a distance of one unit from the fourth code; and the error correction circuit is further to correct the second single element error in the selected one of the cache coherency state registers, if detected, by replacing the four bit code with the fourth code.
 13. The system of claim 9, wherein the first set of codes consists of codes where three elements have the first value and one element has the second value, and where all the elements of the fourth code have the second value.
 14. The system of claim 13, further comprising: an error detection circuit coupled to the plurality of cache coherency state registers, the error detection circuit to detect a single element error in the four bit code if one element has the first value and three elements have the second value; and an error correction circuit coupled to the plurality of cache coherency state registers, the error correction circuit to correct the single element error in the four bit code, if detected, by replacing the four bit code with the fourth code.
 15. The system of claim 13, further comprising: an error detection circuit coupled to the plurality of cache coherency state registers, the error detection circuit to detect a single element error in the four bit code if all four elements have the first value or if two binary elements have the first value and two elements have the second value; and an error correction circuit coupled to the plurality of cache coherency state registers, the error correction circuit to correct the single element error in the four bit code, if detected, by replacing the four bit code with the first code.
 16. The system of claim 15, wherein: the error detection circuit is further to detect a second single element error in the four bit code if one element has the first value and three elements have the second value; and the error correction circuit is further to correct the second single element error in the four bit code, if detected, by replacing the four bit code with the fourth code.
 17. A cache coherency state register comprising four elements characterized by having one of a first value and a second value, said elements forming a four bit code that provides a first set of codes having a minimum distance of two from every other code, and a second set of codes having a minimum distance of three from every other code, the first set of codes comprising a first code representing an Invalid state, a second code representing a Shared state, and a third code representing an Exclusive state, and the second set of codes comprising a fourth code representing a Modified state.
 18. The register of claim 17, further comprising: an error detection circuit to detect a single element error in the four bit code if the four bit code is a distance of one unit from the fourth code; and an error correction circuit to correct the single element error in the four bit code, if detected, by replacing the four bit code with the fourth code.
 19. The register of claim 17, further comprising: an error detection circuit to detect a single element error in the four bit code if the four bit code is a distance of one unit from one of the codes in the first set of codes; and an error correction circuit to correct the single element error in the four bit code, if detected, by replacing the four bit code with the first code.
 20. The register of claim 17, where the first set of codes consists of codes where three elements have the first value and one element has the second value, and where all the elements of the fourth code have the second value.
 21. The register of claim 20, further comprising: an error detection circuit to detect a single element error if one element has the first value and three elements have the second value; and an error correction circuit to correct the single element error in the cache coherency state, if detected, by replacing the four bit code with the fourth code.
 22. The register of claim 20, further comprising: an error detection circuit that detects a single element error if all four elements have the first value or if two binary elements have the first value and two elements have the second value; and an error correction circuit that corrects the single element error in the four bit code, if detected, by replacing the four bit code with the first code. 